package net.zapasa.modelo.parser.impl;


import java.util.Date;
import java.util.List;

import net.zapasa.modelo.parser.interfaz.AbstractParserProducts;
import net.zapasa.modelo.parser.util.Tags;

import org.broadleafcommerce.core.catalog.domain.CompetitiveProductImpl;

public class ParserGoogleShopping extends AbstractParserProducts {

	private final String PARAM_URL_PRODUCTOS = "&adurl";
	
	private final String PARSER = "GoogleShopping";
	protected CompetitiveProductImpl productoActual;
		
	public ParserGoogleShopping() {
		ENDLINE = tagParaAnalizar("ol", "a", "h3", "div", "span", "b");
		//ENDLINE = tagParaAnalizar("a", "h3");
	}
	
	/**
	 * Dependiendo del nombre de la etiqueta, de las etiquetas anteriores guardo el contenido o no en la receta.
	 */
	protected void evaluarElemento(String tagActual, Tags tags, String contenido) {
		
		int index;
		String urlParse;
		
		// Busco el nombre...
		if ("a".equals(tagActual) && tags.existe("h3") && tags.existe("ol", "product-results")) {
			 productoActual = new CompetitiveProductImpl();
			 productoActual.setDate(new Date());
			 productoActual.setName(contenido);
			 productoActual.setParser(PARSER);
			 
			 List<String> url = tags.getAtributosTag("a");
			 //http://www.google.es/aclk?sa=L&ai=C7NHahOmfVJqQMJKT0wXsqIGgCIvi9tMFg8C408sB28PkyZADCAkQASDezc8eKAlg1c3SgrgIyAEHqgQkT9AmpobKR1yVHk6W--FqCGo98wQdSUJgd61ZnPl85_kVTTkVwAUFoAYmgAebi4g1iAcBkAcCqAemvhvgEpK2i7aA0rTPSQ&sig=AOD64_3uMAJ4VXfjeA3YTcYZA4pQGayReQ&ctype=5&rct=j&q=&ved=0CFQQ2CkwAA&adurl=http://zanvic.com/es/2072-barbacoa-tristar-bq2816-8713016028167.html
			 for(String atr : url){
				 index = atr.indexOf(PARAM_URL_PRODUCTOS);
				 if(index!=-1 && atr.startsWith("http")){
					 urlParse = atr.substring(index + PARAM_URL_PRODUCTOS.length() + 1);
					 if(urlParse.length()>255){
						 urlParse = urlParse.substring(0, 254);
					 }
					 productoActual.setUrl(urlParse);
				 }
			 }
		} 
		// Selecciono el precio..
		else if (productoActual!=null && "b".equals(tagActual) && tags.existe("span", "price") ) {
			StringBuffer precio = new StringBuffer(8); 
			
			for(int i=0; i<contenido.length(); i++){
				if((contenido.charAt(i) >= '0' && contenido.charAt(i) <= '9')) {
					precio.append(contenido.charAt(i));
				} else if(contenido.charAt(i) == ','){
					precio.append('.');
				}
			 }

			 if(precio.length()>0){
				 productoActual.setPrice(Double.parseDouble(precio.toString()));
				
			 }
			
		} 
		// Selecciono la empresa..
		else if(productoActual!=null && "div".equals(tagActual) && tags.existe("div", "_tyb") && (tags.existe("div", "pslline") || tags.existe("div", "psgextra"))){
			contenido = contenido.replaceFirst("de ", "");
			productoActual.setShop(contenido);
			productos.add(productoActual);
			productoActual = null;
		}		
	}
}
